分析各类基金近一年『日涨幅』流水线动态图!哭了,真是跌妈不认!
01
前言
最近基金真是跌妈不认,我发现了一个规律:只要我发推文关于基金的,接下来的几天一定跌。不相信的可以去看我前2篇基金发送时间(接下来的几天都跌)
1.基金这么赚钱!!编程实现基金从采集到分析通用模板!(白酒为例)
2.python爬取各类基金数据,以『动图可视化』方式展示基金的涨跌情况
ok,那今天就来奶一口基金(看接下来几天是否还跌)。
最近基金一直跌,所以本文绘制流水线动图展示基金的日涨幅情况(一年内)。
先看一下效果!
02
数据获取
1.获取基金类型
+ 数据源
+ https://danjuanapp.com/
一共有五类基金(股票型、混合型、债券型、指数型、QDII型)。
代码部分
###基金类型
dict_type={"股票型":1,"混合型":3,"债券型":2,"指数型":5,"QDII型":11}
###时间
dict_time={'近一周':'1w','近一月':'1m','近三月':'3m','近六月':'6m','近1年':'1y','近2年':'2y','近3年':'3y','近5年':'5y'}
for key in dict_type:
outwb = openpyxl.Workbook()
outws = outwb.create_sheet(index=0)
outws.cell(row=1, column=1, value="日期")
column = 2
url = "https://danjuanapp.com/djapi/v3/filter/fund?type="+str(dict_type[key])+"&order_by=1y&size=20&page=1"
res = requests.get(url, headers=headers)
res.encoding = 'utf-8'
s = json.loads(res.text)
s = s['data']['items']
for i in range(0,len(s)):
print(s[i]['fd_name']+":"+s[i]['fd_code'])
这样就拿到了每一类基金(1.基金名称、2.基金代码)
2.获取每一支基金日涨幅
这里获取每一支基金近一年的日涨幅情况,下面以(国泰中证钢铁ETF发起式联A)为例,基金代码是:008189
代码部分
code="008189"
url = "https://danjuanapp.com/djapi/fund/nav/history/"+str(code)+"?page=1&size=190"
res = requests.get(url, headers=headers)
res.encoding = 'utf-8'
s = json.loads(res.text)
s = s['data']['items']
date = []
percentage = []
for i in range(0, len(s)):
print(s[i]['date'] + ":" + s[i]['percentage'])
date.append(s[i]['date'])
percentage.append(s[i]['percentage'])
这样我们就可以获取到该基金近一年的日涨幅情况!
下面开始保存数据(方便绘制流水线动图)
3.保存数据
outwb = openpyxl.Workbook()
outws = outwb.create_sheet(index=0)
outws.cell(row=1, column=1, value="日期")
column = 2
url = "https://danjuanapp.com/djapi/v3/filter/fund?type="+str(dict_type[key])+"&order_by=1y&size=20&page=1"
res = requests.get(url, headers=headers)
res.encoding = 'utf-8'
s = json.loads(res.text)
s = s['data']['items']
for i in range(0,len(s)):
print(s[i]['fd_name']+":"+s[i]['fd_code'])
outws.cell(row=1, column=column, value=str(s[i]['fd_name']))
datelist,daydetail = everyone(s[i]['fd_code'])
count = 2
###写入日期
if i == 0:
for k in range(0, len(datelist)):
outws.cell(row=count, column=1, value=str(datelist[k]))
count = count +1
count = 2
##写入涨幅
for k in range(0,len(daydetail)):
outws.cell(row=count, column=column, value=str(str(round(float(daydetail[k]), 2))))
count = count + 1
column = column + 1
print("-------------")
outwb.save(str(key)+"近一年日涨幅-李运辰.xlsx") # 保存
下面开始将这些数据制作成流水线动图!!!
03
制作流水线动图
1.方法一
import bar_chart_race as bcr
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #显示中文标签
plt.rcParams['axes.unicode_minus']=False #解决负号“-”显示为方块的问题
# 获取数据
df = pd.read_csv("指数型近一年日涨幅-李运辰.csv",index_col=0)
# 生成动态流水线
bcr.bar_chart_race(df=df,
filename='指数型近一年日涨幅流水-李运辰.mp4', #生成的动态条形图的文件位置
orientation='h', #h条形图 v柱状图
sort='desc', #降序,asc-升序
n_bars=10, #设置最多能显示的条目数
fixed_order=False, # 设置固定类目
fixed_max=False, #固定数值轴,使其不发生动态变化 True-固定
steps_per_period=24, #图像帧数:数值越小,越不流畅,越大,越流畅
period_length=20, #设置帧率,单位时间默认为500ms 即为24帧的总时间是500ms
end_period_pause=200,#固定值比如年份的停留时间
interpolate_period=False,
period_label={'x': .80, 'y': .5, 'ha': 'right', 'va': 'center','size':16}, #设置日期标签的时间格式
colors='dark12', #设置柱状图颜色颜色,通过在「_colormaps.py」文件中添加颜色信息,即可自定义配置颜色
title={'label': '指数型近一年日涨幅流水','size': 18,}, #图表标题
bar_size=.95, #条形图高度
bar_textposition='inside',#条形图标签文字位置
bar_texttemplate='{x:,.0f}', #条形图标签文字格式
bar_label_font=16, #条形图标签文字大小
tick_label_font=16, #坐标轴标签文字大小
tick_template='{x:,.0f}',#坐标轴标签文字格式
shared_fontdict={'family': 'Microsoft YaHei','color': 'rebeccapurple'}, #全局字体属性
scale='linear',
fig=None,
writer=None,
bar_kwargs={'alpha': .7},#条形图属性,可以设置透明度,边框等
fig_kwargs={'figsize': (16, 10), 'dpi': 144},#figsize-设置画布大小,默认(6, 3.5),dpi-图像分辨率,默认144
filter_column_colors=True,#去除条形图重复颜色,True去除,默认为False
)
缺点:
1.安装包下载麻烦!
2.中文乱码问题(上面代码已解决乱码问题,对应小白来说可能比较困难)。
3.慢!慢!慢!,制作2-3分钟的动图或者视频,至少需要30分钟!
强烈不推荐这种方法!!!
2.方法二
方法二直接采用在线可视化制作:花火hanabi
(这里不详细解释这个平台,没打广告,哈哈哈,下面解释怎么用就行)
+ https://hanabi.data-viz.cn/visualisation/dynamic_bar_chart?lang=zh-CN
导入数据
修改图表
可以修改视频标题、背景音乐、logo等
修改好这些之后就可以导出!
导出
可以导出成gif也也可以是mp4
最后就可以将制作的流水线动图(视频)成功导出!
视频已经上传到视频号,在本文开头可以看到。
04
总结
1.爬取各类基金近一年的日涨幅数据
2.在线可视化制作流水线动图(视频)
代码获取方式在下方,如果大家对代码有明白的可以扫码看代码讲解!
如果大家对本文代码源码感兴趣,扫码关注『Python爬虫数据分析挖掘』后台回复:基金流水线 ,获取完整代码!
本文代码讲解视频!
------------- 推荐阅读 -------------
2.python实战破解『梨视频』反爬机制,轻松实现批量视频下载!
3.爬取3w条『各种品牌』笔记本电脑数据,统计分析并进行可视化展示!真好看~